Domaine de l’intelligence artificielle
Consiste à entraîner des modèles informatiques à effectuer des tâches sans avoir été explicitement programmés pour les accomplir
Les modèles peuvent s’améliorer au fil du temps en apprenant à partir de données
Exemple : Traduction automatique Reconnaissance vocale…
décrire et comprendre les phénomènes à partir de données
hypothetico-déductive (part d’hypothèses et utilise des tests statistiques pour les vérifier)
données souvent de taille limitée et structurées
modèles simples et faciles à comprendre
prédire les résultats futurs à partir de données passées
inductive (part de données et essaie de déduire les règles sous-jacentes)
peut être utilisé avec des données de grande taille et non structurées
modèles complexes et difficiles à interpréter (réseaux de neurones, arbres de décision)
\[\hat{y} = f(x, \theta)\]
où \(x\) est l’entrée, \(\theta\) sont les paramètres du modèle et \(\hat{y}\) est la valeur prédite par le modèle pour l’entrée \(x\).
Objectifs : Trouver les valeurs optimales de \(\theta\) qui minimisent l’erreur entre les valeurs prédites et valeurs réelles.
Découvrir une structure au sein d’un ensemble d’individus caractérisés par des covariables X
Label est inconnu
\[\hat{y} = f(x, \theta)\]
où \(x\) est l’entrée, \(\theta\) sont les paramètres du modèle et \(\hat{y}\) est la valeur prédite par le modèle pour l’entrée \(x\).
Objectifs : trouver des structures ou des patterns dans les données qui peuvent être utilisés pour effectuer des tâches utiles
Les paramètres du modèle sont mis à jour en utilisant une fonction de coût et une méthode d’optimisation afin de trouver des structures ou des patterns dans les données
Utilisée pour les tâches de régression
Formule: \[MSE = \frac{1}{n} \sum_{i=1}^{n} (y_i - \hat{y}_i)^2\]
Simple à calculer et à interpréter, mais sensible aux outliers et peu robuste face à la skewness des données
Utilisée pour les tâches de régression
Formule: \[MAE = \frac{1}{n} \sum_{i=1}^{n} |y_i - \hat{y}_i|\]
Moins sensible aux outliers que le MSE, mais moins intuitive à interpréter
Utilisée pour les tâches de régression
Formule: \[RMSE = \sqrt{\frac{1}{n} \sum_{i=1}^{n} (y_i - \hat{y}_i)^2}\]
racine carrée de l’erreur quadratique moyenne (MSE)
## échelle similaire aux vraies valeurs de sortie
Utilisée pour les tâches de classification
Formule: \[Err_{class} = \frac{n_{erreurs}}{n}\]
Simple à calculer, mais ne prend pas en compte la probabilité des prédictions
# Chargement des données d'entraînement
train <- read.csv("train.csv")
X_train <- train[,1] # variables explicatives
y_train <- train[,2] # variable à prédire
# Entraînement du modèle de régression linéaire
model <- lm(y_train ~ X_train)
# Prédiction sur les données d'entraînement
y_pred <- predict(model, X_train)
# Calcul de l'erreur quadratique moyenne
mse <- mean((y_train - y_pred)^2)
# Affichage de l'erreur
print(mse)
# Load the serialized R object from the specified file
data_tot <- readRDS("./TD_ML/data.rds")
# Set the seed for the random number generator to the value 45
set.seed(45)
# Generate a random sample of 100 elements from the rows of the 'data_tot' data frame, without replacement
sample_train <- sample(1:dim(data_tot)[1], 100, replace = F)
# Subset the 'data_tot' data frame to select only the rows in the random sample
data <- data_tot[sample_train,]
# Fit a linear regression model to the data with 'hospital_los_day' as the dependent variable and 'sapsi_first' as the independent variable
fit1 <- lm(hospital_los_day ~ sapsi_first, data = data)
# Print a summary of the fitted model
summary(fit1)
##
## Call:
## lm(formula = hospital_los_day ~ sapsi_first, data = data)
##
## Residuals:
## Min 1Q Median 3Q Max
## -8.354 -5.782 -2.486 2.186 53.259
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 8.0248 3.4826 2.304 0.0233 *
## sapsi_first 0.1226 0.2234 0.549 0.5844
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 9.061 on 98 degrees of freedom
## Multiple R-squared: 0.003063, Adjusted R-squared: -0.00711
## F-statistic: 0.3011 on 1 and 98 DF, p-value: 0.5844
# Use the fitted model to make predictions on the data
y_pred <- predict(fit1, data)
# Calculate the mean squared error between the actual dependent variable values and the predicted values
mse <- mean((data$hospital_los_day - y_pred)^2)
print(mse)
## [1] 80.46587
## Add second variable
fit2 <- lm(hospital_los_day ~ sapsi_first+age, data = data)
#summary(fit2)
y_pred2 <- predict(fit2, data)
mse2 <- mean((data$hospital_los_day - y_pred2)^2)
print(mse2)
## [1] 79.89498
p1<-data %>% ggplot(aes(x=sapsi_first,y=hospital_los_day))+geom_jitter()+theme_light()
p1
p2<-data %>% ggplot(aes(x=sapsi_first,y=hospital_los_day))+geom_jitter()+theme_light()+
geom_smooth( method = lm, formula = y ~ x, se = FALSE)
p2
p3<-data %>% ggplot(aes(x=sapsi_first,y=hospital_los_day))+geom_jitter()+theme_light()+
geom_smooth( method = lm, formula = y ~ poly(x,2), se = FALSE)
p3
p4<-data %>% ggplot(aes(x=sapsi_first,y=hospital_los_day))+geom_jitter()+theme_light()+
geom_smooth( method = lm, formula = y ~ poly(x,3), se = FALSE)
p4
library(gridExtra)
## Warning: le package 'gridExtra' a été compilé avec la version R 4.1.3
##
## Attachement du package : 'gridExtra'
## L'objet suivant est masqué depuis 'package:dplyr':
##
## combine
grid.arrange(p1, p2, p3, p4, nrow = 2)
\[y_i \in {0, 1}\]
\[\hat{y} = f(X)\]
Fonction de seuil nécessaire pour revenir sur 0,1
ex : \(\hat{y} \geq 0.5\) classe 1 et \(\hat{y} < 0.5\) classe 0
évaluation de l’algo par \[y_i \neq \hat{y}_i\]
| y = 1 | y = 0 | |
|---|---|---|
| y_pred = 1 | TP | FP |
| y_pred = 0 | FN | TN |
| y = 1 | y = 0 | |
|---|---|---|
| y_pred = 1 | TP | FP |
| y_pred = 0 | FN | TN |
\[\text{Sensibilité} = \frac{TP}{TP + FN}\]
détecter correctement les exemples positifs
utiles quand exemples positifs sont rares
| y = 1 | y = 0 | |
|---|---|---|
| y_pred = 1 | TP | FP |
| y_pred = 0 | FN | TN |
\[\text{Spécificité} = \frac{TN}{TN + FP}\]
détecter correctement les exemples négatifs
| y = 1 | y = 0 | |
|---|---|---|
| y_pred = 1 | TP | FP |
| y_pred = 0 | FN | TN |
\[\text{Précision} = \frac{TP}{TP + FP}\]
prédire correctement la classe positive
| y = 1 | y = 0 | |
|---|---|---|
| y_pred = 1 | TP | FP |
| y_pred = 0 | FN | TN |
\[\text{VPN} = \frac{TN}{TN + FN}\]
prédire correctement la classe négative
| y = 1 | y = 0 | |
|---|---|---|
| y_pred = 1 | TP | FP |
| y_pred = 0 | FN | TN |
\[\text{Accuracy} = \frac{TP + TN}{TP + TN + FP + FN}\]
prédire correctement la classe de chaque exemple
utile lorsque les classes sont équilibrées
performance du classifieur en fonction du seuil de décision
sensibilité et spécificité à chaque seuil
AUC : aire sous la courbe
Mesure agrégée de performance
AUC = 1 modèle parfait
AUC = 0,5 modèle équivalent à choisir au hasard
Average Precision recall Curve
précision et rappel
Mieux pour les classifications non équilibrées
\[\text{F1 Score} = 2\times\frac{\text{Précision}\times\text{Sensibilité}}{\text{Précision}+\text{Sensibilité}}\]